home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / eliza.com / ELIZA.BAS < prev    next >
Encoding:
BASIC Source File  |  1983-03-10  |  7.5 KB  |  205 lines

  1. 10 DIM S(36),R(36),N(36)
  2. 20 N1=36:N2=14:N3=112
  3. 30 RESTORE 2030
  4. 40 FOR X=1 TO N1
  5. 50 READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1
  6. 60 NEXT X
  7. 70 CLS:PRINT "HI! I'M ELIZA. I AM YOUR PERSONAL THERAPY COMPUTER.  PLEASE TELL                ME YOUR PROBLEM. (PLEASE TYPE IN CAPITAL LETTERS)"
  8. 80 REM
  9. 90 REM       -----USER INPUT SECTION------
  10. 100 REM
  11. 110 INPUT I$
  12. 120 I$=" "+I$+" "
  13. 130 REM GET RID OF APOSTROPHES
  14. 140 FOR L=1 TO LEN(I$)
  15. 150 IF MID$(I$,L,1)="'" THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 150
  16. 160 IF L+4<=LEN(I$) THEN IF MID$(I$,L,4)="SHUT" THEN PRINT "SHUT UP...":END
  17. 170 NEXT L
  18. 180 IF I$=P$ THEN PRINT "PLEASE DON'T REPEAT YOURSELF!":GOTO 80
  19. 190 REM
  20. 200 REM    ------FIND KEYWORD IN I$------
  21. 210 REM
  22. 220 RESTORE
  23. 230 S=0
  24. 240 FOR K=1 TO N1
  25. 250 READ K$
  26. 260 IF S>0 THEN 300
  27. 270 L=INSTR(I$,K$)
  28. 280 IF L>0 THEN S=K:T=L:F$=K$
  29. 300 NEXT K
  30. 310 IF S>0 THEN K=S:L=T:GOTO 340
  31. 320 K=36:GOTO 600:REM   WE DIDN'FIND ANY KEYWORDS
  32. 330 REM
  33. 340 REM   TAKE RIGHT PART OF STRING AND CONJUGATE IT
  34. 350 REM   USING THE LIST OF STRINGS TO BE SWAPPED
  35. 360 REM
  36. 370 RESTORE 820
  37. 400 C$="  "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)+" "
  38. 410 FOR X=1 TO N2/2
  39. 420 READ S$,R$
  40. 430 FOR L=1 TO LEN(C$)
  41. 440 IF L+LEN(S$)>LEN(C$) THEN 490
  42. 450 IF MID$(C$,L,LEN(S$))<>S$ THEN 490
  43. 460 C$=LEFT$(C$,L-1)+R$+RIGHT$(C$,LEN(C$)-L-LEN(S$)+1)
  44. 470 L=L+LEN(R$)
  45. 480 GOTO 530
  46. 490 IF L+LEN(R$)>LEN(C$) THEN 530
  47. 500 IF MID$(C$,L,LEN(R$))<>R$ THEN 530
  48. 510 C$=LEFT$(C$,L-1)+S$+RIGHT$(C$,LEN(C$)-L-LEN(R$)+1)
  49. 520 L=L+LEN(S$)
  50. 530 NEXT L
  51. 540 NEXT X
  52. 550 IF MID$(C$,2,1)="  "THEN C$=RIGHT$(C$,LEN(C$)-1)
  53. 560 FOR L=1 TO LEN(C$)
  54. 570 IF MID$(C$,L,1)="!" THEN C$=LEFT$(C$,L-1)+RIGHT$(C$,LEN(C$)-L):GOTO 570
  55. 580 NEXT L
  56. 590 REM
  57. 600 REM    NOW USING THE KEYWORD NUMBER (K) GET REPLY
  58. 610 REM
  59. 620 RESTORE 880
  60. 630 FOR X=1 TO R(K):READ F$: NEXT X
  61. 640 R(K)=R(K)+1: IF R(K)>N(K) THEN R(K)=S(K)
  62. 650 IF RIGHT$(F$, 1)<>"*" THEN PRINT F$:P$=I$:GOTO 80
  63. 660 PRINT LEFT$(F$,LEN(F$)-1);C$
  64. 670 P$=I$:GOTO  80
  65. 680 REM
  66. 690 REM    ------PROGRAM DATA FOLLOWS
  67. 700 REM
  68. 710 REM        KEYWORDS
  69. 720 REM
  70. 730 DATA "CAN YOY", "CAN I", "YOU ARE", "YOU'RE", "I DON'T", "I FEEL"
  71. 740 DATA "WHY DON'T YOU", "WHY CAN'T I", "ARE YOU", "I CAN'T", "I AM", "I'M"
  72. 750 DATA "YOU", "I WANT", "WHAT", "HOW", "WHO", "WHERE", "WHEN", "WHY"
  73. 760 DATA "NAME", "CAUSE", "SORRY", "DREAM", "HELLO", "HI", "MAYBE"
  74. 770 DATA "NO", "YOUR", "ALWAYS", "THINK", "ALIKE", "YES", "FRIEND"
  75. 780 DATA "COMPUTER", "NO KEY FOUND"
  76. 790 REM
  77. 800 REM      STRING DATA FOR CONJUGATIONS
  78. 810 REM
  79. 820 DATA " ARE ", " AM ", "WE'RE ", " WAS ", " YOU ", " I ", " YOUR ", " MY "
  80. 830 DATA " I'VE ", " YOU'VE ", " I'M ", " YOU'RE "
  81. 840 DATA " ME ", " !YOU "
  82. 850 REM
  83. 860 REM      REPLIES
  84. 870 REM
  85. 880 DATA "DON'T YOU BELIEVE THAT I CAN*"
  86. 890 DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*"
  87. 900 DATA "YOU WANT ME TO BE ABLE TO*"
  88. 910 DATA "PERHAPS YOU DON'T WANT TO*"
  89. 920 DATA "DO YOU WANT TO BE ABLE TO*"
  90. 930 DATA "WHAT MAKES YOU THINK I AM*"
  91. 940 DATA "DOES IT PLEASE YOU TO BELIEVE I AM*"
  92. 950 DATA "PERHAPS YOU WOULD LIKE TO BE*"
  93. 960 DATA "DO YOU SOMETIMES WISH YOU WERE*"
  94. 970 DATA "DON'T YOU REALLY*"
  95. 980 DATA "WHY DON'T YOU*"
  96. 990 DATA "DO YOU WISH TO BE ABLE TO*"
  97. 1000 DATA "DOES THAT TROUBLE YOU?"
  98. 1010 DATA "TELL ME MORE ABOUT SUCH FEELINGS."
  99. 1020 DATA "DO YOU OFTEN FEEL*"
  100. 1030 DATA "DO YOU ENJOY FEELING*"
  101. 1040 DATA "DO YOU REALLY BELIEVE I DON'T*"
  102. 1050 DATA "PERHAPS IN GOOD TIME I WILL*"
  103. 1060 DATA "DO YOU WANT ME TO*"
  104. 1070 DATA "DO YOU THINK YOU SHOULD BE ABLE TO*"
  105. 1080 DATA "WHY CAN'T YOU*"
  106. 1090 DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"
  107. 1100 DATA "WOULD YOU PREFER IF I WERE NOT*"
  108. 1110 DATA "PERHAPS IN YOUR FANTASIES I AM*"
  109. 1120 DATA "HOW DO YOU KNOW YOU CAN'T*"
  110. 1130 DATA "HAVE YOU TRIED?"
  111. 1140 DATA "PERHAPS YOU CAN NOW*"
  112. 1150 DATA "DID YOU COME TO ME BECAUSE YOU ARE*"
  113. 1160 DATA "HOW LONG HAVE YOU BEEN*"
  114. 1170 DATA "DO YOU BELIEVE IT IS NORMAL TO BE*"
  115. 1180 DATA "DO YOU ENJOY BEING*"
  116. 1190 DATA "WE WERE DISCUSSING YOU --NOT ME."
  117. 1200 DATA "OH, I*"
  118. 1210 DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"
  119. 1220 DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"
  120. 1230 DATA "WHY DO YOU WANT*"
  121. 1240 DATA "SUPPOSE YOU GOT*"
  122. 1250 DATA "WHAT IF YOU NEVER GOT*"
  123. 1260 DATA "I SOMETIMES ALSO WANT*"
  124. 1270 DATA "WHY DO YOU ASK?"
  125. 1280 DATA "DOES THAT QUESTION INTEREST YOU?"
  126. 1290 DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?"
  127. 1300 DATA "WHAT DO YOU THINK?"
  128. 1310 DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?"
  129. 1320 DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?"
  130. 1330 DATA "HAVE YOU ASKED ANYONE ELSE?"
  131. 1340 DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?"
  132. 1350 DATA "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"
  133. 1360 DATA "NAMES DON'T INTEREST ME."
  134. 1370 DATA "I DON'T CARE ABOUT NAMES--PLEASE GO ON."
  135. 1380 DATA "IS THAT THE REAL REASON?"
  136. 1390 DATA "DON'T ANY OTHER REASONS COME TO MIND?"
  137. 1400 DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?"
  138. 1410 DATA "WHAT OTHER REASONS MIGHT THERE BE?"
  139. 1420 DATA "PLEASE DON'T APOLOGISE!"
  140. 1430 DATA "APOLOGIES ARE NOT NECESSARY."
  141. 1440 DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGISE?"
  142. 1450 DATA "DON'T BE SO DEFENSIVE!"
  143. 1460 DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?"
  144. 1470 DATA "DO YOU DREAM OFTEN?"
  145. 1480 DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?"
  146. 1490 DATA "ARE YOU DISTURBED BY YOUR DREAMS?"
  147. 1500 DATA "HOW DO YOU...PLEASE STATE YOUR PROBLEM."
  148. 1510 DATA "YOU DON'T SEEM QUITE CERTAIN."
  149. 1520 DATA "WHY THE UNCERTAIN TONE?"
  150. 1530 DATA "CAN'T YOU BE MORE POSITIVE?"
  151. 1540 DATA "YOU AREN'T SURE?"
  152. 1550 DATA "DON'T YOU KNOW?"
  153. 1560 DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?"
  154. 1570 DATA "YOU ARE BEING A BIT NEGATIVE."
  155. 1580 DATA "WHY NOT?"
  156. 1590 DATA "ARE YOU SURE?"
  157. 1600 DATA "WHY NO?"
  158. 1610 DATA "WHY ARE YOU CONCERNED ABOUT MY*"
  159. 1620 DATA "WHAT ABOUT YOUR OWN*"
  160. 1630 DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?"
  161. 1640 DATA "WHEN?"
  162. 1650 DATA "WHAT ARE YOU THINKING OF?"
  163. 1660 DATA "REALLY,ALWAYS?"
  164. 1670 DATA "DO YOU REALLY THINK SO?"
  165. 1680 DATA "BUT YOU ARE NOT SURE YOU*"
  166. 1690 DATA "DO YOU DOUBT YOU*"
  167. 1700 DATA "IN WHAT WAY?"
  168. 1710 DATA "WHAT RESEMBLENCE DO YOU SEE?"
  169. 1720 DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?"
  170. 1730 DATA "WHAT OTHER CONNECTIONS DO YOU SEE?"
  171. 1740 DATA "COULD THERE REALLY BE SOME CONNECTION?"
  172. 1750 DATA "HOW?"
  173. 1760 DATA "YOU SEEM QUITE POSITIVE."
  174. 1770 DATA "ARE YOU SURE?"
  175. 1780 DATA "I SEE."
  176. 1790 DATA "I UNDERSTAND."
  177. 1800 DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?"
  178. 1810 DATA "DO YOUR FRIENDS WORRY YOU?"
  179. 1820 DATA "DO YOUR FRIENDS PICK ON YOU?"
  180. 1830 DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?"
  181. 1840 DATA "DO YOU IMPOSE ON YOUR FRIENDS?"
  182. 1850 DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU."
  183. 1860 DATA "DO COMPUTERS WORRY YOU?"
  184. 1870 DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?"
  185. 1880 DATA "ARE YOU FRIGHTENED BY MACHINES?"
  186. 1890 DATA "WHY DO YOU MENTION COMPUTERS?"
  187. 1900 DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEMS?"
  188. 1910 DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?"
  189. 1920 DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"
  190. 1930 DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?"
  191. 1940 DATA "WHAT DOES THAT SUGGEST TO YOU?"
  192. 1950 DATA "I SEE."
  193. 1960 DATA "I'M NOT SURE I UNDERSTAND YOU FULLY."
  194. 1970 DATA "COME, COME, ELUCIDATE YOUR THOUGHTS."
  195. 1980 DATA "CAN YOU ELABORATE ON THAT?"
  196. 1990 DATA "THAT IS QUITE INTERESTING."
  197. 2000 REM
  198. 2010 REM     DATA FOR FINDING RIGHT REPLIES
  199. 2020 REM
  200. 2030 DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
  201. 2040 DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9
  202. 2050 DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
  203. 2060 DATA 80,3,83,7,90,3,93,6,99,7,106,6
  204. ,9,40,9,40,9,40,9,40,9
  205. 2050 DATA 49,2,51,4,55,4,59,4